/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Beans;

import conexion.Coneccion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;

/**
 *
 * @author USUARIO
 */
public class ModIti_Programacion {
    
    private int idprogramacion;
    private int fk_idrangodisponibilidad;
    private int fk_ididas;
    private int fk_iditinerario;
    private int fk_idvehiculo;
    private int fk_idagencia;
    private int fk_idempleado;
    private int fk_idusuario_crea;
    private int fk_idusuario_mod;
    private boolean eliminado;
    private String accion;

    public ModIti_Programacion() {
    }

    public int getIdprogramacion() {
        return idprogramacion;
    }

    public void setIdprogramacion(int idprogramacion) {
        this.idprogramacion = idprogramacion;
    }

    public int getFk_idrangodisponibilidad() {
        return fk_idrangodisponibilidad;
    }

    public void setFk_idrangodisponibilidad(int fk_idrangodisponibilidad) {
        this.fk_idrangodisponibilidad = fk_idrangodisponibilidad;
    }

    public int getFk_ididas() {
        return fk_ididas;
    }

    public void setFk_ididas(int fk_ididas) {
        this.fk_ididas = fk_ididas;
    }

    public int getFk_iditinerario() {
        return fk_iditinerario;
    }

    public void setFk_iditinerario(int fk_iditinerario) {
        this.fk_iditinerario = fk_iditinerario;
    }

    public int getFk_idvehiculo() {
        return fk_idvehiculo;
    }

    public void setFk_idvehiculo(int fk_idvehiculo) {
        this.fk_idvehiculo = fk_idvehiculo;
    }

    public int getFk_idagencia() {
        return fk_idagencia;
    }

    public void setFk_idagencia(int fk_idagencia) {
        this.fk_idagencia = fk_idagencia;
    }

    public int getFk_idempleado() {
        return fk_idempleado;
    }

    public void setFk_idempleado(int fk_idempleado) {
        this.fk_idempleado = fk_idempleado;
    }

    public int getFk_idusuario_crea() {
        return fk_idusuario_crea;
    }

    public void setFk_idusuario_crea(int fk_idusuario_crea) {
        this.fk_idusuario_crea = fk_idusuario_crea;
    }

    public int getFk_idusuario_mod() {
        return fk_idusuario_mod;
    }

    public void setFk_idusuario_mod(int fk_idusuario_mod) {
        this.fk_idusuario_mod = fk_idusuario_mod;
    }

    public boolean isEliminado() {
        return eliminado;
    }

    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }

    public String getAccion() {
        return accion;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }
    
    
    /* __________________________________________________________________ */
    /* ------------------------------------------------------------------ */
    public Integer operaciones(ModIti_Programacion p)
    {
        String inserto;
        CallableStatement ps = null;
        ResultSet rs = null;
        Integer id = 0;
        Connection cn = Coneccion.getConexion();
        try
        {   ps = cn.prepareCall("{call mante_pas_programacion_operacion"
                + "(?,?,?,?,?,?,?,?,?)}");
            ps.setInt(1, p.getIdprogramacion());
            ps.setInt(2, p.getFk_idrangodisponibilidad());
            ps.setInt(3, p.getFk_iditinerario());
            ps.setInt(4, p.getFk_idvehiculo());
            ps.setInt(5, p.getFk_idagencia());
            ps.setInt(6, p.getFk_idempleado());
            ps.setInt(7, p.getFk_idusuario_crea());
            ps.setInt(8, p.getFk_idusuario_mod());
            ps.setString(9, p.getAccion());
            rs = ps.executeQuery();
            if (rs.next())
            {   if(p.getAccion().equals("U"))
                {   inserto = "La operación fue actualizado correctamente";
                    id = rs.getInt(1);
                } else
                {   if(p.getAccion().equals("I"))
                    {   inserto = "Se inserto correctamente la nueva agencia";
                        id = rs.getInt(1);
                    } else 
                    {   inserto = "El registro fue Eliminado Correctamente";
                        id = rs.getInt(1);
                    }
                }
            } else 
            {   inserto = "No se realizo la operación";
            }
        } catch(Exception ex)
        {   inserto = ex.getMessage();
            System.out.println("fallo ERROR" + ex.getMessage());
        } finally
        {   try
            {   rs.close();
                ps.close();
                cn.close();
            } catch(Exception e) {}
        }
        return id;
    }
    
    public boolean estaProgramadoByIdItinerario(int iditi)
    {   ModIti_Programacion listaP = new ModIti_Programacion();
        boolean ok = false;
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_programacion_listar where fk_iditinerario=?");
            ps.setInt(1, iditi);
            rs = ps.executeQuery();
            while(rs.next())
            {   ModIti_Programacion p = new ModIti_Programacion();
                p.setIdprogramacion(rs.getInt(1));
                p.setFk_idrangodisponibilidad(rs.getInt(2));
                p.setFk_iditinerario(rs.getInt(3));
                p.setFk_idvehiculo(rs.getInt(4));
                p.setFk_idagencia(rs.getInt(5));
                p.setFk_idempleado(rs.getInt(6));
                ok = true;
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return ok;
    }
    
    public ModIti_Programacion obtenerProgramacionByIdItinerario(int iditi)
    {   ModIti_Programacion p = new ModIti_Programacion();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_programacion_listar where fk_iditinerario=?");
            ps.setInt(1, iditi);
            rs = ps.executeQuery();
            while(rs.next())
            {   p.setIdprogramacion(rs.getInt(1));
                p.setFk_idrangodisponibilidad(rs.getInt(2));
                p.setFk_iditinerario(rs.getInt(3));
                p.setFk_idvehiculo(rs.getInt(4));
                p.setFk_idagencia(rs.getInt(5));
                p.setFk_idempleado(rs.getInt(6));
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return p;
    }
    
    public ModIti_Programacion obtenerProgramacionPorFecha(int idRango)
    {   ModIti_Programacion p = new ModIti_Programacion();
        boolean rpt = false;
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_programacion_listar where fk_idrangodisponibilidad="+idRango);            
            rs = ps.executeQuery();
            while(rs.next())
            {   p.setIdprogramacion(rs.getInt(1));
                p.setFk_idrangodisponibilidad(rs.getInt(2));
                p.setFk_iditinerario(rs.getInt(3));
                p.setFk_idvehiculo(rs.getInt(4));
                p.setFk_idagencia(rs.getInt(5));
                p.setFk_idempleado(rs.getInt(6));
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return p;
    }
    
}
